FPGAs provide designers with flexibility in designing systems for information/data processing. By having the ability to program or configure the FPGA, designers can effectively change the system specifications or performance. Further, end users may configure or program the FPGA to suit their applications.
Typical FPGAs include programmable logic circuitry and interconnect in their fabric. To provide system designers or users with increased functionality or flexibility, some FPGAs also include hardened circuitry. Examples of hardened circuitry include memory controllers, memory, processors, etc. Interface circuitry couples the programmable logic circuitry to the hardened circuitry. To meet timing specifications of competing functions near a clock synchronous interface, pipelining near the interface or build-time configurable interfaces, such as ready/valid latency, has been used.